home *** CD-ROM | disk | FTP | other *** search
/ Aminet 25 / Aminet 25 (1998)(GTI - Schatztruhe)[!][Jun 1998].iso / Aminet / game / shoot / ADoom_src_1_2.lha / ADoom_src / amiga_sega.s < prev    next >
Text File  |  1998-03-01  |  2KB  |  100 lines

  1.         mc68020
  2.  
  3.         XDEF    @Sega6
  4.         XDEF    @Sega3
  5.  
  6.         section    text,code
  7.  
  8. ; returns - xxSAxxxxxxCBMXYZxxSAxxDUxxCBRLDU
  9.  
  10.         cnop    0,4
  11.  
  12. @Sega6        bsr.b    GetSega            ; xxSAxxDUxxCBRLDU
  13.         swap    d0
  14.         bsr.b    GetSega            ; xxSAxxDUxxCBRLDU
  15.         bsr.b    GetSega            ; xxSAxxxxxxCBRLDU
  16.         bsr.b    GetSega            ; xxSAxxxxxxCBMXYZ
  17.         move.w    #$FF00,$DFF034        ; SEL=1
  18.         swap    d0
  19.         rts
  20.  
  21. ; returns - 0000000000000000xxSAxxDUxxCBRLDU
  22.  
  23.         cnop    0,4
  24.  
  25. @Sega3        moveq    #0,d0
  26.         bsr.b    GetSega
  27.         move.w    #$FF00,$DFF034        ; SEL=1
  28.         rts
  29.  
  30.         cnop    0,4
  31.  
  32. GetSega        movem.l    d1-d3,-(a7)
  33.         clr.w    d0
  34.  
  35.         move.w    #$FF01,$DFF034        ; SEL=1, dump caps
  36.         moveq    #22,d3
  37. .hl        tst.b    $BFE001
  38.         dbra    d3,.hl
  39.  
  40.         btst    #7,$BFE001
  41.         bne.b    .1
  42.         bset    #4,d0            ; B/0
  43. .1        move.w    $DFF016,d1
  44.         btst    #14,d1
  45.         bne.b    .2
  46.         bset    #5,d0            ; C/0
  47. .2        move.w    $DFF00C,d1
  48.         btst    #1,d1
  49.         beq.b    .3
  50.         bset    #3,d0            ; R/M
  51. .3        btst    #9,d1
  52.         beq.b    .4
  53.         bset    #2,d0            ; L/X
  54. .4        move.w    d1,d2
  55.         lsl.w    #1,d2
  56.         eor.w    d2,d1
  57.         btst    #1,d1
  58.         beq.b    .5
  59.         bset    #1,d0            ; D/Y
  60. .5        btst    #9,d1
  61.         beq.b    .6
  62.         bset    #0,d0            ; U/Z
  63.  
  64. .6        lsl.w    #8,d0
  65.  
  66.         move.w    #$EF01,$DFF034        ; SEL=0, dump caps
  67.         moveq    #22,d3
  68. .ll        tst.b    $BFE001
  69.         dbra    d3,.ll
  70.  
  71.         btst    #7,$BFE001
  72.         bne.b    .11
  73.         bset    #4,d0            ; A/0
  74. .11        move.w    $DFF016,d1
  75.         btst    #14,d1
  76.         bne.b    .12
  77.         bset    #5,d0            ; S/0
  78. .12        move.w    $DFF00C,d1
  79.         btst    #1,d1
  80.         beq.b    .13
  81.         bset    #3,d0            ; 0/1
  82. .13        btst    #9,d1
  83.         beq.b    .14
  84.         bset    #2,d0            ; 0/1
  85. .14        move.w    d1,d2
  86.         lsl.w    #1,d2
  87.         eor.w    d2,d1
  88.         btst    #1,d1
  89.         beq.b    .15
  90.         bset    #1,d0            ; D/1
  91. .15        btst    #9,d1
  92.         beq.b    .16
  93.         bset    #0,d0            ; U/1
  94.  
  95. .16        ror.w    #8,d0
  96.         movem.l    (a7)+,d1-d3
  97.         rts
  98.  
  99.         END
  100.